package com.boot.system.service.Impl;


import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.boot.framework.common.DictStore;
import com.boot.framework.constants.PageConstants;
import com.boot.framework.utils.Condition;
import com.boot.system.dto.SysDictDTO;
import com.boot.system.entity.SysDictEntity;
import com.boot.system.mapper.SysDictMapper;
import com.boot.system.wrapper.SysDictWrapper;
import com.boot.system.service.ISysDictService;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 系统字典
 *
 * @author yangfan
 * @date 2023-12-25 20:55:34
 */
@Service
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDictEntity> implements ISysDictService {
    private LambdaQueryWrapper<SysDictEntity> getQueryWrapper(Map<String, Object> params) {
        LambdaQueryWrapper<SysDictEntity> wrapper = Wrappers.lambdaQuery(SysDictEntity.class);
        String parentId = (String) params.get("parentId");
        wrapper.eq(StrUtil.isNotBlank(parentId), SysDictEntity::getParentId, parentId);

        wrapper.orderByAsc(SysDictEntity::getSortOrder);
        return wrapper;
    }


    @Override
    public IPage<SysDictDTO> selectPage(Map<String, Object> params) {
        return SysDictWrapper.build().pageDTO(baseMapper.selectPage(Condition.getPage(params), getQueryWrapper(params)));
    }

    @Override
    public List<SysDictDTO> selectList(Map<String, Object> params) {
        return SysDictWrapper.build().listDTO(baseMapper.selectList(getQueryWrapper(params)));
    }

    @Override
    public List<DictStore> getStore() {
        return null;
    }
}